const Controller = require('egg').Controller;


class assign extends Controller {
    /**
     * 菜单跳转
     * @returns {Promise<void>}
     */
    async to(){
        const {app,ctx,service} = this;
        await ctx.render('/admin/assign_query.ejs',{});
    }

    /**
     * 跳转编辑页面
     * @returns {Promise<void>}
     */
    async toedit(){
        const {app,ctx,service} = this;
        //编辑id
        let id = ctx.request.query.id;
        await ctx.render('/admin/assign_edit.ejs',{id:id});
    }

    /**
     * 查询接口
     * isPage 是否分页
     * limit offset 每页限制数 偏移量
     * search 搜索项
     * /admin/接口
     * type get
     * @returns {Promise<void>}
     */
    async index(){
        const {app,ctx,service} = this;
        //取get请求参数
        let param = ctx.query;
        //初始化变量 用于请求参数中缺失部分参数时不至于导致报错
        let limit = 10;
        let offset = 0;
        let number = '';
        let realname = '';
        let phone = '';
        let isPage = 'true';

        //循环请求参数 赋值 到变量
        app.lodash.forEach(param,(v,k)=>{
            if(!app.lodash.isEmpty(v)){
                switch (k) {
                    case 'pageSize':
                        limit = parseInt(v);break;
                    case 'limit':
                        limit = parseInt(v);break;
                    case 'page':
                        offset = parseInt((v - 1) * limit);break;
                    case 'number':
                        number = v;break;
                    case 'realname':
                        realname = v;break;
                    case 'phone':
                        phone = v;break;
                    case 'isPage':
                        isPage = v;break;
                }
            }
        })

        //调取service获取结果
        let rs = await service.assignService.index(offset,limit,isPage,{number,realname,phone});

        //返回
        ctx.body = {
            code : 0,
            data : rs.rows,
            count: rs.count,
            msg : ''
        }
    }

    /**
     * 更新接口
     * /admin/接口/:id
     * type put
     * @returns {Promise<void>}
     */
    async update(){
        const {app,ctx,service} = this;
        //获取post请求参数
        let param = ctx.request.body.data;
        //获取url请求参数
        param.id = ctx.params.id;

        //创建规则
        const rule = {
            id:'required',
            store_id:'required'
        };
        //验证
        const err = await app.validator.validate(param,rule);
        //判断验证结果
        if(!app.lodash.isEmpty(err)){
            //抛出验证错误信息
            ctx.throw(401,err[0].field+' -- '+err[0].message);
        }

        //调用service获取结果
        let rs = await service.assignService.update(param);

        //判断处理结果
        if(!rs){
            //抛出处理失败错误信息
            ctx.throw(501,'记录查询失败');
        }

        //返回
        ctx.body = {
            code : 200,
            data : rs,
            msg : ''
        }
    }
}

module.exports = assign;
